package com.samuel.blog.dao;

import org.springframework.stereotype.Repository;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/**
 * @author kaiji
 */
@Repository("baseDao")
public interface BaseDao<T, E extends Serializable> {

	/**
	 * 根据主键查询
	 *
	 * @param id
	 * 		主键ID
	 * @return	T 对象
	 */
	T selectByPrimaryKey(E id);

	/**
	 * 根据主键修改 判断是否为空
	 *
	 * @param entity
	 * 		T对象
	 * @return	0 or 1
	 */
	int updateByPrimaryKeySelective(T entity);

	/**
	 * 根据条件查询
	 *
	 * @param map key==> 表字段
	 * @return	T对象列表
	 */
	List<T> selectByMap(Map<String, Object> map);

	/**
	 * 保存对象 判断是否为空
	 * @param entity
	 * 		T对象
	 * @return 0 or 1
	 */
	int insertSelective(T entity);
	
	/**
	 * 保存对象
	 *
	 * @param entity
	 * 		T 对象
	 * @return	0 or 1
	 */
	int insert(T entity);
	
	/**
	 * 根据主键删除对象
	 *
	 * @param id
	 * 		E 主键
	 * @return	0 or 1
	 */
	int deleteByPrimaryKey(E id);

	
}
